package io.bdmc.modules.bss.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * <p>
 * 通过snmp读出设备的参数。 实体
 * </p>
 *
 * @author ping
 * @since 2020-06-29
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
// "DeviceStatusStatic对象", description = "通过snmp读出设备的参数。")
public class DeviceStatusStatic extends Model<DeviceStatusStatic> {

    private static final long serialVersionUID = 1L;

    // "系统trap上报")
    @TableId(value = "status_id", type = IdType.AUTO)
    private Integer statusId;

    // "设备id")
    private Integer deviceId;

    // "设备名称")
    private String devName;

    // "设备IP地址")
    private String devIpAddr;

    // "设备网关")
    private String devGateway;

    // "设备子网掩码")
    private String devNetMask;

    // "保存当前网络配置，设置设备的IP后必须保存当前配置才能修改成功,0")
    private Integer saveCurrentConfiguration;

    // "重置为出厂设置0")
    private Integer reset2Factory;

    // "复位IFMS1000,0")
    private Integer reboot;

    // "IFMS1000内存消耗的数量")
    private Integer ddrConsumption;

    // "清理IFMS1000内存,0")
    private Integer ddrCleanUp;

    // "重启内部模块1,0")
    private Integer resetModular1;

    // "重启内部模块2,0")
    private Integer resetModular2;

    // "设备硬件版本")
    private String pstHwVer;

    // "设备软件版本")
    private String pstSwVer;

    // "设备固件版本")
    private String pstFwVer;

    // "设备模型")
    private String pstModel;

    // "设备序列号")
    private String pstSn;

    // "设备物理地址")
    private String devMacAddress;

    // "系统trap上报(1)")
    @TableField("trap_funcEn")
    private Integer trapFuncen;

    // "trap上报IP地址，接收trap高级服务器的IP地址，最大可以设置4个")
    private String trapTargetIpAddr;

    // "trap上报社区，公有还是私有")
    private String trapTargetCommunity;

    // "trap上报版本")
    private String targetTrapVrsion;

    // "设备风扇数量")
    private Integer fanTotalNum;

    // "设备总功率")
    private Integer powerTotalNum;

    // "设备风扇状态")
    private String fanStatus;

    // "设备风扇转速")
    private String fanFpeed;

    // "设备最大功率")
    private Integer powerMaximu;

    // "设备12V供电A")
    private BigDecimal powerVoltage12va;

    // "设备12V供电B")
    private BigDecimal powerVoltage12vb;

    // "设备12V风扇供电")
    private BigDecimal powerVoltage12vFan;

    // "设备12VOTDR供电1")
    private BigDecimal powerVoltage12Votdr1;

    // "设备12VOTDR供电2")
    private BigDecimal powerVoltage12Votdr2;

    // "设备5V供电")
    private BigDecimal powerVoltageVdd5v;

    // "设备3.3V供电")
    private BigDecimal powerVoltageVdd3p3v;

    // "设备1.8V传输供电")
    private BigDecimal votage1v8Rtc;

    // "设备温度")
    private Integer temperature;

    // "设备高温阈值")
    private Integer temperatureHighThreshold;

    // "设备低温阈值")
    private Integer temperatureLowThreshold;

    // "设备工作方式")
    private Integer temperatureControlMode;

    // "设备ADG707开关，设定不同值打开串口不同功能(0.1.2.OTDR23.OTDR14.Swtich
    // Console5.UART16.UART07.UART0)")
    private Integer adg707Switch;

    // "设备ftp服务器地址")
    private String ftpSrvIp;

    // "ftp服务器用户名")
    private String ftpUserName;

    // "ftp服务器密码")
    private String ftpUserPwd;

    // "ftp服务器文件名")
    private String ftpFileName;

    // "升级文件类型1. Software Image.2. Firmware Image.3. Configuration File 升级文件类型1.
    // Software Image.2. Firmware Image.3. Configuration File")
    private Integer upgFileType;

    // "升级目标槽位号")
    private Integer upgDstSlot;

    // "升级开始")
    private Integer upgAction;

    // "系统升级状态")
    private Integer upgStatus;

    // "升级结果信息")
    @TableField("upg_resultInfo")
    private String upgResultinfo;

    // "更新时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime updateTime;

    @Override
    public Serializable pkVal() {
        return this.statusId;
    }

}
